home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / AbstractAction$ArrayTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  2.8 KB  |  198 lines

  1. package javax.swing;
  2.  
  3. import java.io.Serializable;
  4. import java.util.Enumeration;
  5. import java.util.Hashtable;
  6.  
  7. class AbstractAction$ArrayTable implements Cloneable, Serializable {
  8.    // $FF: synthetic field
  9.    private final AbstractAction this$0;
  10.    private Object table;
  11.    private static final int ARRAY_BOUNDARY = 8;
  12.  
  13.    AbstractAction$ArrayTable(AbstractAction var1) {
  14.       this.this$0 = var1;
  15.       this.table = null;
  16.    }
  17.  
  18.    public synchronized Object clone() {
  19.       AbstractAction$ArrayTable var1 = new AbstractAction$ArrayTable(this.this$0);
  20.       if (this.isArray()) {
  21.          Object[] var2 = this.table;
  22.  
  23.          for(int var3 = 0; var3 < var2.length - 1; var3 += 2) {
  24.             var1.put(var2[var3], var2[var3 + 1]);
  25.          }
  26.       } else {
  27.          Hashtable var5 = (Hashtable)this.table;
  28.          Enumeration var6 = var5.keys();
  29.  
  30.          while(var6.hasMoreElements()) {
  31.             Object var4 = var6.nextElement();
  32.             var1.put(var4, var5.get(var4));
  33.          }
  34.       }
  35.  
  36.       return var1;
  37.    }
  38.  
  39.    public boolean containsKey(Object var1) {
  40.       boolean var2 = false;
  41.       if (this.table != null) {
  42.          if (this.isArray()) {
  43.             Object[] var3 = this.table;
  44.  
  45.             for(int var4 = 0; var4 < var3.length - 1; var4 += 2) {
  46.                if (var3[var4].equals(var1)) {
  47.                   var2 = true;
  48.                   break;
  49.                }
  50.             }
  51.          } else {
  52.             var2 = ((Hashtable)this.table).containsKey(var1);
  53.          }
  54.       }
  55.  
  56.       return var2;
  57.    }
  58.  
  59.    public Object get(Object var1) {
  60.       Object var2 = null;
  61.       if (this.table != null) {
  62.          if (this.isArray()) {
  63.             Object[] var3 = this.table;
  64.  
  65.             for(int var4 = 0; var4 < var3.length - 1; var4 += 2) {
  66.                if (var3[var4].equals(var1)) {
  67.                   var2 = var3[var4 + 1];
  68.                   break;
  69.                }
  70.             }
  71.          } else {
  72.             var2 = ((Hashtable)this.table).get(var1);
  73.          }
  74.       }
  75.  
  76.       return var2;
  77.    }
  78.  
  79.    private void grow() {
  80.       Object[] var1 = this.table;
  81.       Hashtable var2 = new Hashtable(var1.length / 2);
  82.  
  83.       for(int var3 = 0; var3 < var1.length; var3 += 2) {
  84.          var2.put(var1[var3], var1[var3 + 1]);
  85.       }
  86.  
  87.       this.table = var2;
  88.    }
  89.  
  90.    private boolean isArray() {
  91.       return this.table instanceof Object[];
  92.    }
  93.  
  94.    public synchronized void put(Object var1, Object var2) {
  95.       if (this.table == null) {
  96.          this.table = new Object[]{var1, var2};
  97.       } else {
  98.          int var3 = this.size();
  99.          if (var3 < 8) {
  100.             if (this.containsKey(var1)) {
  101.                Object[] var4 = this.table;
  102.  
  103.                for(int var5 = 0; var5 < var4.length - 1; var5 += 2) {
  104.                   if (var4[var5].equals(var1)) {
  105.                      var4[var5 + 1] = var2;
  106.                      break;
  107.                   }
  108.                }
  109.             } else {
  110.                Object[] var7 = this.table;
  111.                int var8 = var7.length;
  112.                Object[] var6 = new Object[var8 + 2];
  113.                System.arraycopy(var7, 0, var6, 0, var8);
  114.                var6[var8] = var1;
  115.                var6[var8 + 1] = var2;
  116.                this.table = var6;
  117.             }
  118.          } else {
  119.             if (var3 == 8 && this.isArray()) {
  120.                this.grow();
  121.             }
  122.  
  123.             ((Hashtable)this.table).put(var1, var2);
  124.          }
  125.       }
  126.  
  127.    }
  128.  
  129.    public synchronized Object remove(Object var1) {
  130.       Object var2 = null;
  131.       if (var1 == null) {
  132.          return null;
  133.       } else {
  134.          if (this.table != null) {
  135.             if (!this.isArray()) {
  136.                var2 = ((Hashtable)this.table).remove(var1);
  137.             } else {
  138.                int var3 = -1;
  139.                Object[] var4 = this.table;
  140.  
  141.                for(int var5 = var4.length - 2; var5 >= 0; var5 -= 2) {
  142.                   if (var4[var5].equals(var1)) {
  143.                      var3 = var5;
  144.                      var2 = var4[var5 + 1];
  145.                      break;
  146.                   }
  147.                }
  148.  
  149.                if (var3 != -1) {
  150.                   Object[] var6 = new Object[var4.length - 2];
  151.                   System.arraycopy(var4, 0, var6, 0, var3);
  152.                   if (var3 < var6.length) {
  153.                      System.arraycopy(var4, var3 + 2, var6, var3, var6.length - var3);
  154.                   }
  155.  
  156.                   this.table = var6.length == 0 ? null : var6;
  157.                }
  158.             }
  159.  
  160.             if (this.size() == 7 && !this.isArray()) {
  161.                this.shrink();
  162.             }
  163.          }
  164.  
  165.          return var2;
  166.       }
  167.    }
  168.  
  169.    private void shrink() {
  170.       Hashtable var1 = (Hashtable)this.table;
  171.       Object[] var2 = new Object[var1.size() * 2];
  172.       Enumeration var3 = var1.keys();
  173.  
  174.       for(int var4 = 0; var3.hasMoreElements(); var4 += 2) {
  175.          Object var5 = var3.nextElement();
  176.          var2[var4] = var5;
  177.          var2[var4 + 1] = var1.get(var5);
  178.       }
  179.  
  180.       this.table = var2;
  181.    }
  182.  
  183.    public int size() {
  184.       if (this.table == null) {
  185.          return 0;
  186.       } else {
  187.          int var1;
  188.          if (this.isArray()) {
  189.             var1 = ((Object[])this.table).length / 2;
  190.          } else {
  191.             var1 = ((Hashtable)this.table).size();
  192.          }
  193.  
  194.          return var1;
  195.       }
  196.    }
  197. }
  198.